<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>设计模式——适配器模式2</title>
    <script type="application/javascript" charset="UTF-8" src="../../common/CommonUtils.js"></script>
    <script type="application/javascript" charset="UTF-8">
        // 在企业的前端开发中，可能会用到多种javascript的库
        // 比如：jquery,yui,prototype,....
        // 由于开发人员所掌握知识的不同，
        // 不同人可能会不用不同的库开发，
        // 这样的情况下就需要适配器对不同库下的代码进行转换

        // 模拟根据id获取指定的dom元素
        // Prototype $ function (不需要传递任何形式的形参，在调用的时候，直接传入实参)
        // YUI get function (需要传递一个参数，不是字符串就是数组)
        window.onload = function () {
            //var domArr = $('inp1','inp2');
            //alert(domArr);
            //var dom = YAHOO.get('inp1');
            //var domArr = YAHOO.get(['inp1','inp2']);
            //alert(dom);
            //alert(domArr);
        }

        // 该函数不需要形参
        function $ () {
            var elements = [];
            for (var i = 0; i < arguments.length; i++) {
                var element = arguments[i];
                if (typeof element == 'string')
                    var dom = document.getElementById(element);
                if (arguments.length == 1)
                    return dom;
                elements.push(dom);
            }
            return elements;
        }

        var YAHOO = {};
        // 该函数只需要一个参数，要么是字符串，要么是数组
        YAHOO.get = function (el) {
            if (typeof el == 'string')
                return document.getElementById(el);
            if (el instanceof Array) {
                var elements = [];
                for (var i = 0; i < el.length; i++) {
                    var dom = YAHOO.get(el[i]);
                    elements.push(dom);
                }
                return elements;
            }
        }

        YAHOO.get =  YUIToPrototypeAdapter ;

        function YUIToPrototypeAdapter(){
            //对于YUI开发人员来说 永远传递一个参数
            if(arguments.length == 1){
                var e = arguments[0];
                return  $.apply(window,e instanceof Array?e:[e]);
            } else {
                return $.apply(window ,arguments);
            }
        }
        
    </script>
</head>
<body>
    <input id="inp1" type="text"/>
    <input id="inp2" type="text"/>
</body>
</html>